#pragma once
#include "CH58x_common.h"

/* 整个用户code区分成四块，16K，208K，208K，16K，后三块下面分别叫做imageA（用户代码区），imageB（备份代码区）和imageIAP */
/* FLASH定义 */
#define IMAGE_START_ADD         0x0
#define FLASH_BLOCK_SIZE        EEPROM_BLOCK_SIZE
#define IMAGE_SIZE              208 * 1024
/* imageA定义 */
#define IMAGE_A_FLAG           0x01
#define IMAGE_A_START_ADD      (IMAGE_START_ADD + 0x4000)
#define IMAGE_A_SIZE           IMAGE_SIZE
/* imageB定义 */
#define IMAGE_B_FLAG           0x02
#define IMAGE_B_START_ADD      (IMAGE_A_START_ADD + IMAGE_SIZE)
#define IMAGE_B_SIZE           IMAGE_SIZE
/* imageIAP定义 */
#define IMAGE_IAP_FLAG         0x03
#define IMAGE_IAP_START_ADD    (IMAGE_B_START_ADD + IMAGE_SIZE)
#define IMAGE_IAP_SIZE         16 * 1024
// boot OTA flag存放在DataFlash的地址，不能占用蓝牙的位置
#define OTA_DATAFLASH_ADD      (IMAGE_START_ADD + 0x00077000 - FLASH_ROM_MAX_SIZE)

extern void OtaBegin(int image_size);
extern void OtaRecvData(uint8_t *data, short size);
extern uint8_t OtaCheckData(uint8_t checksum);
extern void OtaEndAndRestart(void);